package 富婆梦.第一阶段.Java基础视频学习.Scoket知识点.TCP图片上传服务器;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;

/**
 * @ProjectName: java-learning
 * @Package: 富婆梦.第一阶段.Scoket知识点.TCP图片上传服务器
 * @ClassName: TCPClient
 * @Author: hemengjin
 * @Description: *  实现TCP图片上传客户端
 * *  实现步骤:
 * *    1. Socket套接字连接服务器
 * *    2. 通过Socket获取字节输出流,写图片
 * *    3. 使用自己的流对象,读取图片数据源
 * *         FileInputStream
 * *    4. 读取图片,使用字节输出流,将图片写到服务器
 * *       采用字节数组进行缓冲
 * *    5. 通过Socket套接字获取字节输入流
 * *       读取服务器发回来的上传成功
 * *    6. 关闭资源
 * @Date:2021/11/10 21:12
 * @Version: 1.0
 */
public class TCPClient {
    public static void main(String[] args) throws IOException {
        //拿到Socket连接
        Socket socket = new Socket("192.168.50.30", 8888);
        //拿到Scoket连接里面的输入流
        OutputStream outputStream = socket.getOutputStream();

        //创建自己的文件输出流，读取本地图片信息
        FileInputStream fileInputStream= new FileInputStream("C:\\Users\\18279\\Pictures\\Camera Roll\\1.jpg");
        byte[] data = new byte[1024];
        //把本地读取到的图片数据，通过Scoket写入通道
        while ((fileInputStream.read(data)) != -1) {
            outputStream.write(data);
        }
        //给服务器写终止序列
        socket.shutdownOutput();
        //收到服务器传回来的信息
        InputStream inputStream = socket.getInputStream();
        int len = inputStream.read(data);
        System.out.println(Thread.currentThread().getName()+":"+new String(data, 0, len));
        fileInputStream.close();
        socket.close();
    }
}
